package com.woniuxy.api;

import com.woniu.cloud.common.dto.Result;
import com.woniuxy.cloud.form.AddUserCarForm;
import com.woniuxy.cloud.form.RegisterForm;
import com.woniuxy.cloud.form.UpdateUserAddressForm;
import com.woniuxy.cloud.form.UserAddressForm;
import com.woniuxy.form.ServiceSettlementShoppingCart;
import com.woniuxy.form.SettlementShoppingCart;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;

@FeignClient(value = "user-assembly",contextId = "PersonApi")
public interface PersonApi {
    /**
     *
     * 注册
     * @return
     *
     */
    @PostMapping("/permit/registry")
    Result registry(@RequestBody RegisterForm registerForm);

    /**
     * 密码登录
     * @param userName 用户名
     * @param userPhone 手机号
     * @param passWord 密码
     * @return
     */
    @GetMapping("/permit/loginByPassword")
    Result loginByPassword(@RequestParam("userName") String userName, @RequestParam("userPhone") String userPhone, @RequestParam("passWord") String passWord);


    /**
     * 验证码登录接口
     * @param code
     * @param userPhone
     * @param userName
     * @return
     */
    @GetMapping("/permit/loginByVerifyCode")
    Result loginByVerifyCode(@RequestParam("code") String code, @RequestParam("userPhone") String userPhone,@RequestParam("userName") String userName);

    /**
     * 获取登录验证码
     * @param userPhone 手机号
     * @param userName 用户名
     * @return
     * 用户输入其中之一就可以向手机发送验证码
     */
    @GetMapping("/permit/getVerifyCode")
    Result getLoginMessage(@RequestParam("userName") String userName, @RequestParam("userPhone") String userPhone);

    /**
     * 通过账号或手机号手机号获取验证短信
     * @param userName  用户名
     * @param userPhone 手机号
     * @return Result
     **/
    @GetMapping("/permit/getUpdateMessage")
    public Result getUpdateMessage(@RequestParam("userName") String userName, @RequestParam("userPhone") String userPhone);

    /**
     * 获取注册验证码
     * @param userPhone 手机号
     * @return Result
     **/
    @GetMapping("/permit/getRegisterMessageByUserPhone")
    public Result getRegisterMessageByUserPhone(@RequestParam("userPhone") String userPhone);


    /**
     * 修改密码接口
     * @param userName 用户名
     * @param userPhone 手机号
     * @param number 验证码
     * @param newPassWord 密码
     * @return
     */
    @PutMapping("/permit/updatePassword")
    Result updatePassword(@RequestParam("userName") String userName, @RequestParam("userPhone") String userPhone,@RequestParam("number") String number, @RequestParam("newPassWord") String newPassWord);



    /**
     * 修改用户头像
     * @param file 头像文件
     * @return
     */
    @PutMapping("/updateUserProfilePhotoByUserId")
    Result updateUserProfilePhotoByUserId(@RequestParam("multipartFile") MultipartFile file);

    /**
     * 修改支付密码
     * @param userPaymentPassWord 手机号
     * @param newPassWord 新支付密码
     * @return
     */
    @PutMapping("/updatePersonPayCode")
    Result updatePersonPayCode(@RequestParam("userPaymentPassWord") String userPaymentPassWord, @RequestParam("newPassWord") String newPassWord);

    /**
     * 修改用户默认收货地址
     * @param userAddressId 用户地址id
     * @return Result
     **/
    @PutMapping("/updateDefaultAddress")
    Result updateDefaultAddress(@RequestParam("userAddressId") Integer userAddressId);

    /**
     * 修改用户昵称
     * @param newName 新昵称
     * @return Result
     **/
    @PutMapping("/updateUserNickNameByUserId")
    Result updateUserNickNameByUserId(@RequestParam("newName") String newName);


    /**
     * 用户添加爱车
     * @return Result
     * @body addUserCar
     **/
    @PostMapping("/insetCar")
    Result insetCar(@RequestParam("userCarCarSeriesId") Integer userCarCarSeriesId);

    /**
     * 用户修改默认爱车
     * @param userCarId 用户车型id
     * @return Result
     **/
    @PutMapping("/updateDefaultCarByUserCarId")
    Result updateDefaultCarByUserCarId(@RequestParam("userCarId") Integer userCarId);

    /**
     * 用户移除爱车
     * @param userCarId 用户车型id
     * @return Result
     **/
    @DeleteMapping("/deleteCarByUserCarId")
    Result deleteCarByUserCarId(@RequestParam("userCarId") Integer userCarId);

    /**
     * 用户修改收获地址
     * @return Result
     * @body updateUserAddressForm
     **/
    @PutMapping("/updateAddressByUserId")
    Result updateAddressByUserId(@RequestBody UpdateUserAddressForm updateUserAddressForm);

    /**
     * 用户添加收货地址
     * @return Result
     * @body userAddressForm
     **/
    @PostMapping("/insertAddressByUserId")
    Result insertAddressByUserId(@RequestBody UserAddressForm userAddressForm);



}
